package com.cskaoyan.string.basic;

/*
       1. String s = “hello”; s += “world”; 问s的结果是多少?
       String str = "hello"

       2. String s = new String(“hello”)和String s = “hello”;的区别?
          最主要的区别是：
          String s = new String(“hello”)，会涉及到两个字符串对象
          String s = “hello”，只会涉及一个字符串对象

      3. 看程序，写结果

       字符串拼接何时会在堆上，创建新的字符串对象，何时不会呢？
     1. 当参与字符串拼接的两个字符串中，至少有一个是以字符串的引用 变量 的形式出现，
        此时拼接运算，必然会在堆上创建新的字符串对象
           s1 + s2   s1 + "hello"
     2. 只有参与字符串拼接运算两个字符串，都是字符串常量的时候，此时不会在堆上创建新的字符串对象，而是直接拼接



 */
public class Demo3Exercise {

    public static void main(String[] args) {


        // String s = new String(“hello”)
        //String s1 = new String("hello");

        // String s = “hello”
        //String s2 = "hello";


//        String s1 = new String("hello");
//        String s2 = new String("hello");
//        System.out.println(s1==s2);  //false
//        System.out.println(s1.equals(s2)); //true
//
//        String s3 = new String("hello");
//        String s4 = "hello";
//        System.out.println(s3==s4); //false
//        System.out.println(s3.equals(s4)); //true
//
//        String s5 = "hello";
//        String s6 = "hello";
//        System.out.println(s5==s6); //true
//        System.out.println(s5.equals(s6)); //true

        String test = "1qqwewrwqt" + "2tqtwt" + "3qtqt" + "4qtqwt" + "qtqw";
        System.out.println(test);


        String s1 = "hello";
        String s2 = "world";
        String s3 = "helloworld";
        System.out.println(s3 == (s1+s2)); //false
        System.out.println(s3.equals(s1+s2)); // true

        System.out.println(s3==("hello"+"world"));  //true
        System.out.println(s3.equals("hello"+"world")); //true

    }
}
